package join.model.beans;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import join.util.AppListUtil;
import join.util.FormatterUtil;
import join.util.RepositoryUtil;

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.format.annotation.NumberFormat;
import org.springframework.format.annotation.NumberFormat.Style;

@Entity
@Table(name="proyecto_pago", schema=RepositoryUtil.ESQUEMA_NOMBRE)
public class ProyectoPago {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name ="id", nullable=false)
	private Long id;
	@Column(name ="proyecto", nullable=false)
	private Long proyecto;
	@Column(name ="proyecto_costo", nullable=false)
	private Long proyectoCosto;
	@Column(name ="concepto", nullable=true)
	private String concepto;
	@Column(name ="referencia", nullable=true)
	private String referencia;
	@Column(name ="referencia_codigo", nullable=true)
	private String referenciaCodigo;
	@Column(name ="tipo_referencia", nullable=true)
	private String tipoReferencia;
	@Column(name ="documento_referencia", nullable=true)
	private String documentoReferencia;
	@Column(name ="valor_bruto", nullable=true)
	@NumberFormat (style=Style.NUMBER)
	private Double valorBruto;
	@Column(name ="valor_neto", nullable=true)
	@NumberFormat (style=Style.NUMBER)
	private Double valorNeto;
	@Column(name ="fecha_estimada", nullable=true)
	@DateTimeFormat(pattern = FormatterUtil.DATE_FORMAT)
	private Date fechaEstimada;
	@Column(name ="fecha_pago", nullable=true)
	@DateTimeFormat(pattern = FormatterUtil.DATE_FORMAT)
	private Date fechaPago;
	@Column(name ="estado", nullable=true)
	private String estado;
	/**
	 * @return the id
	 */
	public Long getId() {
		return id;
	}
	/**
	 * @param id the id to set
	 */
	public void setId(Long id) {
		this.id = id;
	}
	/**
	 * @return the proyecto
	 */
	public Long getProyecto() {
		return proyecto;
	}
	/**
	 * @param proyecto the proyecto to set
	 */
	public void setProyecto(Long proyecto) {
		this.proyecto = proyecto;
	}
	/**
	 * @return the proyectoCosto
	 */
	public Long getProyectoCosto() {
		return proyectoCosto;
	}
	/**
	 * @param proyectoCosto the proyectoCosto to set
	 */
	public void setProyectoCosto(Long proyectoCosto) {
		this.proyectoCosto = proyectoCosto;
	}
	/**
	 * @return the referencia
	 */
	public String getReferencia() {
		return referencia;
	}
	/**
	 * @param referencia the referencia to set
	 */
	public void setReferencia(String referencia) {
		this.referencia = referencia;
	}
	/**
	 * @return the referenciaCodigo
	 */
	public String getReferenciaCodigo() {
		return referenciaCodigo;
	}
	/**
	 * @param referenciaCodigo the referenciaCodigo to set
	 */
	public void setReferenciaCodigo(String referenciaCodigo) {
		this.referenciaCodigo = referenciaCodigo;
	}
	/**
	 * @return the tipoReferencia
	 */
	public String getTipoReferencia() {
		return tipoReferencia;
	}
	/**
	 * @param tipoReferencia the tipoReferencia to set
	 */
	public void setTipoReferencia(String tipoReferencia) {
		this.tipoReferencia = tipoReferencia;
	}
	/**
	 * @return the documentoReferencia
	 */
	public String getDocumentoReferencia() {
		return documentoReferencia;
	}
	/**
	 * @param documentoReferencia the documentoReferencia to set
	 */
	public void setDocumentoReferencia(String documentoReferencia) {
		this.documentoReferencia = documentoReferencia;
	}
	/**
	 * @return the valorBruto
	 */
	public Double getValorBruto() {
		return valorBruto;
	}
	/**
	 * @param valorBruto the valorBruto to set
	 */
	public void setValorBruto(Double valorBruto) {
		this.valorBruto = valorBruto;
	}
	/**
	 * @return the valorNeto
	 */
	public Double getValorNeto() {
		return valorNeto;
	}
	/**
	 * @param valorNeto the valorNeto to set
	 */
	public void setValorNeto(Double valorNeto) {
		this.valorNeto = valorNeto;
	}
	/**
	 * @return the fechaEstimada
	 */
	public Date getFechaEstimada() {
		return fechaEstimada;
	}
	/**
	 * @param fechaEstimada the fechaEstimada to set
	 */
	public void setFechaEstimada(Date fechaEstimada) {
		this.fechaEstimada = fechaEstimada;
	}
	/**
	 * @return the fechaPago
	 */
	public Date getFechaPago() {
		return fechaPago;
	}
	/**
	 * @param fechaPago the fechaPago to set
	 */
	public void setFechaPago(Date fechaPago) {
		this.fechaPago = fechaPago;
	}
	/**
	 * @return the estado
	 */
	public String getEstado() {
		return estado;
	}
	/**
	 * @param estado the estado to set
	 */
	public void setEstado(String estado) {
		this.estado = estado;
	}
	/**
	 * @return the concepto
	 */
	public String getConcepto() {
		return concepto;
	}
	/**
	 * @param concepto the concepto to set
	 */
	public void setConcepto(String concepto) {
		this.concepto = concepto;
	}
	/**
	 * Nombre para el estado
	 * @return
	 */
	public String getEstadoNombre (){
		return AppListUtil.listaProcesoTexto("proyectoPagoEstado", getEstado());
	}
	
	/**
	 * Nombre para el estado
	 * @return
	 */
	public String getTipoReferenciaNombre (){
		return AppListUtil.listaProcesoTexto("proyectoPagoTipoReferencia", getTipoReferencia());
	}
}